package Darstellung;

import java.awt.Color;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JPanel;

import Darstellung.Objekte.JObjekt;
import Darstellung.Objekte.JTasche;
import Spiel.Game;

public class Spielfenster extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Spielreflektion spielreflektion;
	private List<JComponent> benutzerSchnittstellen;

	public Spielfenster() {
		System.out.print("Darstellung des Spiels wird erstellt..." + "\n");
		this.spielreflektion = new Spielreflektion();
		this.add(spielreflektion);
		this.benutzerSchnittstellen = new LinkedList<JComponent>();
		this.setLayout(null);
		this.setSize(400, 400);
		this.setLocation(10, 10);
		// this.setBackground(new Color(50, 50, 200));
		initBenutzerschnittstellen();
		System.out.print("Darstellung des Spiels ist fertig!" + "\n");
	}

	private void initBenutzerschnittstellen() {
		JButton knopf = new JButton("Geschwindigkeit 10-100");
		this.addBenutzerSchnittstelle(knopf);
		knopf.setSize(180, 30);
		knopf.setLocation(0, this.getHeight() - knopf.getHeight());
		knopf.setBackground(Color.GREEN);

		JButton knopf2 = new JButton("Tasche");
		this.addBenutzerSchnittstelle(knopf2);
		knopf2.setSize(180, 30);
		knopf2.setLocation(200, this.getHeight() - knopf2.getHeight());
		knopf2.setBackground(Color.ORANGE);

		JTasche tasche = new JTasche(Game.getSpieler().getTasche());
		this.addBenutzerSchnittstelle(tasche);
	}

	public List<JObjekt> getObjekte() {
		if (spielreflektion == null) {
			System.out.print("NPE!" + "\n");
			return null;
		}
		return spielreflektion.getObjekte();
	}

	public void addObjekt(JObjekt objekt) {
		if (spielreflektion == null) {
			System.out.print("NPE!" + "\n");
			return;
		}
		this.spielreflektion.addObjekt(objekt);
	}

	public void removeObjekt(JObjekt objekt) {
		if (spielreflektion == null) {
			System.out.print("NPE!" + "\n");
			return;
		}
		this.spielreflektion.removeObjekt(objekt);
	}

	public void removeAllObjekte() {
		if (spielreflektion == null) {
			System.out.print("NPE!" + "\n");
			return;
		}
		this.spielreflektion.removeAllObjekte();
	}

	public JObjekt getObjekt(int idx) {
		if (spielreflektion == null) {
			System.out.print("NPE!" + "\n");
			return null;
		}
		return this.spielreflektion.getObjekt(idx);
	}

	public List<JComponent> getBenutzerSchnittstellen() {
		return benutzerSchnittstellen;
	}

	public void addBenutzerSchnittstelle(JComponent benutzerSchnittstelle) {
		if (benutzerSchnittstellen == null) {
			System.out.print("NPE!" + "\n");
			return;
		}
		this.benutzerSchnittstellen.add(benutzerSchnittstelle);
		// this.add(benutzerSchnittstelle);
		Color c = benutzerSchnittstelle.getBackground();
		benutzerSchnittstelle.setFocusable(false);
		benutzerSchnittstelle.setBackground(new Color(c.getRed(), c.getGreen(),
				c.getBlue(), 100));
		this.add(benutzerSchnittstelle, 0);
	}

	public void removeBenutzerSchnittstelle(JComponent benutzerSchnittstelle) {
		if (benutzerSchnittstellen == null) {
			System.out.print("NPE!" + "\n");
			return;
		}
		this.benutzerSchnittstellen.remove(benutzerSchnittstelle);
		this.remove(benutzerSchnittstelle);
	}

}
